<?php
require_once(FWK_EXCEPTION."CustonException.class.php");
require_once(BIB_ACTIVE_RECORD);
require_once(FWK_MODEL."AbsModelDao.class.php");
require_once(FWK_UTIL."FormataDatas.class.php");
/**
 * Classe modelo para registro do historico de vendas
 *
 * @author Vinicius Mendonca <viniciusmr3@gmail.com>
 * @since 1.0 - 27/11/2012
 */
class Ranking extends AbsModelDao{

	public $_table = "historico_vendas";

	public $_id = "id_vendas";

	public function getIdVenda(){
		return $this->id_vendas;
	}



	public function getListaGrid($limitIni=0, $numRegs=15, $count=false, $campoFiltro="", $valorFiltro=""){
		$strQuery = "SELECT ";
		if($count){
			$strQuery.= " count(distinct t.id_usuario) ";
		}else{
			$strQuery.= " t.id_usuario, t.nome_usuario as Nome, t.cpf_usuario as CPF,  t.qtd_pontos as Pontos ";
		}
		
		$strQuery .= " FROM  (
				select u.id_usuario, u.nome_usuario, u.cpf_usuario, sum(h.qtd_pontos) as qtd_pontos, u.id_endereco, u.email_usuario
					from usuario u 
					LEFT JOIN historico_vendas h ON (h.cpf_usuario = u.cpf_usuario)
					where h.tipo = 'V'  and DATE_FORMAT(h.data_venda, '%Y')    = ".date("Y")."  group by u.id_usuario, u.nome_usuario, u.cpf_usuario				
				
				union all
				
				select u.id_usuario, u.nome_usuario, u.cpf_usuario,  0 as qtd_pontos, u.id_endereco, u.email_usuario
					from usuario u 
					LEFT JOIN historico_vendas h ON (h.cpf_usuario = u.cpf_usuario)
					group by u.id_usuario, u.nome_usuario, u.cpf_usuario
				
				) t 
				
				inner join enderecos e
				on t.id_endereco = e.id_endereco 
				inner join estados uf
				on e.id_estado = uf.id_estado
			";
		
		if($campoFiltro != "" && $valorFiltro != ""){
			$strQuery .= " WHERE 1=1 ";
			switch ($campoFiltro){
				case "Nome":
					$strQuery .= " AND LOWER(t.nome_usuario) LIKE _utf8 '%".strtolower($valorFiltro)."%'  COLLATE utf8_unicode_ci";
					break;
				case "CPF":
					$strQuery .= " AND LOWER(t.cpf_usuario) LIKE _utf8 '%".strtolower($valorFiltro)."%'  COLLATE utf8_unicode_ci";
					break;
				case "Email":
					$strQuery .= " AND LOWER(t.email_usuario) LIKE _utf8 '%".strtolower($valorFiltro)."%'  COLLATE utf8_unicode_ci";
					break;
				case "Cidade":
					$strQuery .= " AND LOWER(e.cidade_endereco) LIKE _utf8 '%".strtolower($valorFiltro)."%'  COLLATE utf8_unicode_ci";
					break;
				case "Estado":
					$strQuery .= " AND LOWER(uf.nome_estado) LIKE _utf8 '%".strtolower($valorFiltro)."%'  COLLATE utf8_unicode_ci";
					break;
				default:
					break;
			}
		}
		if(!$count){
			$strQuery .= " group by t.id_usuario, t.nome_usuario, t.cpf_usuario order by qtd_pontos desc , nome_usuario asc ";
			$strQuery .= " LIMIT ".$limitIni." ,".$numRegs;
		}
		$arrRet = ControlDB::getAll($strQuery,3);
		return $arrRet;
	}




	public function alterar($id=null,$post,$file = null){
		try{
			self::salvaPostAutoUtf8($post);
			$this->id_vendas = $id;


			//campos default para todos os daos (data registro)
			$this->data_registro = date("Y-m-d H:i:s");
			self::replace();
			if(self::ErrorMsg()){
				print("<pre>");
				print_r($post);
				die("<br/><br /><h1>".self::ErrorMsg()."</h1>");
			}
		}catch(DaoException $e){
			throw new CustonException($e->getMensagem());
		}
	}
}
?>